from utils.electrode_ctrl import ElectrodeCtrl

import utils.pressure_recv_svr

from utils.linear_map import linear_map

from utils import pulse

import numpy as np

import time

if __name__=='__main__':
    # 声明电极驱动板
    _1st_finger_elec = ElectrodeCtrl('COM13', 115200, 'com') # 大拇指板子串口号
    #_2nd_finger_elec = ElectrodeCtrl('COM13', 115200, 'com') # 食指板子串口号

    # 启动电刺激线程
    pulse.start_pulse_manager()

    # 创建一个8x8的全0矩阵
    pattern_arr = np.zeros((8, 8))

    # 创建 64个8*8矩阵，每个矩阵都都只有一个元素为1
    pattern_arrs = []
    # 用于逐行扫描
    for i in range(8):
        for j in range(8):
            pattern_arr = np.zeros((8, 8))
            pattern_arr[i, j] = 1
            print(f'第{i+1}行第{j+1}列')
            print(pattern_arr)
            pattern_arrs.append(pattern_arr)

    while True:
        
        for i in range(64):
            print(f'正在扫描第{i}个电极点')
            # 将图案写到板子上：这个函数是非阻塞的，设定好可以去干其他的事情
            pulse.set_pulse(
                elec = _1st_finger_elec,# 要设定的板子
                arr = pattern_arrs[i],     # 要呈现的8x8矩阵
                burst_period_ms = 5,    # BP（毫秒）
                pulse_count = 1,        # PN（脉冲数量）
                pulse_period_ms = 5,    # PP（毫秒）
                pulse_width_percent=10, # PN（百分制，百分比于PP）
                voltage = 100,          # 电压（伏特）
                pulse_type = 'neg'      # 阳极或阴极刺激，可选 'pos' 或 'neg'
            )

            # 每秒扫一个电极点
            time.sleep(0.1)